МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
Інститут КНІТ
Кафедра ПЗ
ЗВІТ
До лабораторної роботи № 3
На тему: “ Проектування локальних та мережевих довідкових систем”
З дисципліни : "Системи штучного інтелекту"
Львів – 2010
Тема роботи: Проектування локальних та мережевих довідкових систем.
Мета роботи: Розробити довідкові системи трьох типів: інтегровану довідкову систему на основі семантичної мережі; довідкову систему на основі гіпертекстової моделі знань; довідкову систему на основі фреймової мережі.
Завдання
Вхідними даними є текстовий файл – каталог програмних засобів (ПЗ) для побудови експертних систем. Необхідно розробити довідкові системи трьох зазначених вище типів.
Вибір інформації повинен здійснюватись за двома формами:
скороченій - у вигляді списку назв ПЗ, вибраних за заданим критерієм;
повній - у вигляді опису конкретних ПЗ.
Код програми
using System;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace AI_lab3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Dictionary<string, string> terms = new Dictionary<string, string>();
Dictionary<string, ArrayList> see_also = new Dictionary<string, ArrayList>();
private void Form1_Load(object sender, EventArgs e)
{
StreamReader sr = new StreamReader("..\\..\\source.txt", Encoding.GetEncoding(1251));
string s = "";
while ((s = sr.ReadLine()) != null)
{
if (s == "") continue;
if (s[0] == '@')
treeView1.Nodes.Add(s.Remove(0, 1));
else
{
treeView1.Nodes[treeView1.Nodes.Count - 1].Nodes.Add(s.Split(' ')[0]);
terms.Add(s.Split(' ')[0], s);
}
}
ArrayList al;
foreach (string value in terms.Values)
{
al = new ArrayList();
foreach (string str in value.Split(new char[] { ' ', '.', ',', ';', ':' }))
{
if (terms.ContainsKey(str) == true && al.Contains(str) == false &&
str != value.Split(' ')[0])
al.Add(str);
}
see_also.Add(value.Split(' ')[0], al);
}
}
ArrayList ll_array = new ArrayList();
ArrayList visited_nodes = new ArrayList();
int cur_pos = 0;
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
textBox1.Select(0, 5);
textBox1.DeselectAll();
if (terms.ContainsKey(e.Node.Text))
{
textBox1.Text = terms[e.Node.Text];
textBox1.SelectAll();
textBox1.SelectionFont = new Font("Microsoft Sans Serif", 9F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(204)));
textBox1.Select(0, e.Node.Text.Length);
textBox1.SelectionFont = new Font("Microsoft Sans Serif", 9F, FontStyle.Italic | FontStyle.Bold | FontStyle.Underline, GraphicsUnit.Point, ((byte)(204)));
string s = textBox1.Text.Remove(0, e.Node.Text.Length);
int count = 1;
while (s.IndexOf(e.Node.Text) >= 0)
{
textBox1.Select(s.IndexOf(e.Node.Text) + e.Node.Text.Length * count, e.Node.Text.Length);
textBox1.SelectionFont = new Font("Microsoft Sans Serif", 9F, FontStyle.Bold, GraphicsUnit.Point, ((byte)(204)));
s = s.Remove(s.IndexOf(e.Node.Text), e.Node.Text.Length);
count++;
}
LinkLabel ll, ll2;
foreach (LinkLa...